package com.yangkunhong.utils;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Array;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.UUID;

public class UploadUtils {
    /**
     * 获取当前的日期作为上传文件保存的目录
     * @return
     */
    public static String getLocalDateAsDir(){
        LocalDateTime now = LocalDateTime.now(); // 获取当前日期和时间
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        String formattedDateTime = now.format(formatter);
        return formattedDateTime;


    }

    /**
     * 获取图片的宽高信息
     * @return
     */
    public static HashMap<String,Integer> getImageInfo(InputStream inputStream){
        int width = 0;
        int height = 0;
        try {
            // 读取图片为一个 BufferedImage
            BufferedImage image = ImageIO.read(inputStream);
            if (image != null) {
                 width = image.getWidth();
                 height = image.getHeight();
                //System.out.println("Width: " + width + ", Height: " + height);
            } else {
                //System.out.println("Failed to read image from input stream.");
            }
        } catch (IOException e) {
            //e.printStackTrace();
        }finally {
            //输入流是临时文件，必须关闭，否则会占用系统资源，导致Tomcat temp目录下的文件无法删除，出现错误信息如下：
            /*
            * java.io.IOException: Failed to delete original file xxxxxxxxx * */

            if(inputStream != null){
                try {
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        HashMap<String,Integer> getImageInfo = new HashMap<>();
        getImageInfo.put("width",width);
        getImageInfo.put("height",height);
        return getImageInfo;
    }

    public static String getFileUUIDName(String fileName){
        // 生成一个UUID
        UUID uuid = UUID.randomUUID();
        // 将UUID转换为字符串
        String uuidString = uuid.toString();
        // 通常，为了文件名，你可能想去掉连字符
        String newfileName = uuidString.replaceAll("-", "");
        // 如果需要，你可以添加文件扩展名
        newfileName += "."+getFileExtension(fileName);
        // 输出文件名
        System.out.println("Generated file name: " + fileName);
        // 如果你想保持连字符，并且使用它们作为文件名的一部分，那么可以直接使用uuidString
        // String fileNameWithHyphens = uuidString;
        return  newfileName;
    }
    public static String getFileExtension(String fileName) {
        if (fileName == null || fileName.isEmpty()) {
            return "";
        }
        int dotIndex = fileName.lastIndexOf('.');
        if (dotIndex == -1) {
            return ""; // 没有找到'.'，返回空字符串
        }
        return fileName.substring(dotIndex + 1); // 返回'.'之后的所有字符
    }
}
